<!doctype html>
<html lang="en" class="page-type-section">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>2.3.5 - FreeMarker 手册</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta property="og:site_name" content="FreeMarker 手册">
<meta property="og:title" content="2.3.5">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_5.html">
<link rel="canoical" href="http://freemarker.org/docs/versions_2_3_5.html">
<link rel="icon" href="favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css">
</head>
<body itemscope itemtype="https://schema.org/Code">
    <meta itemprop="url" content="http://freemarker.org/docs/">
    <meta itemprop="name" content="FreeMarker 手册">

  <!--[if lte IE 9]>
  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="http://freemarker.org/docs/api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://sourceforge.net/p/freemarker/bugs/new/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="toc.html" class="navigation-header">Manual</a><div class="navigation-header"></div></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="toc.html"><span itemprop="name">FreeMarker 手册</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">附录</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">版本历史</span></a></li><li class="step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_5.html"><span itemprop="name">2.3.5</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
      <div class="content-wrapper">
  <div id="table-of-contents-wrapper" class="col-left">
      <script>var breadcrumb = ["FreeMarker 手册","附录","版本历史","2.3.5"];</script>
      <script src="toc.js"></script>
      <script src="docgen-resources/main.min.js"></script>
  </div>
<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_6.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_4.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-section1" id="versions_2_3_5" itemprop="headline">2.3.5</h1>
</div></div><div class="page-menu">
<div class="page-menu-title">Page Contents</div>
<ul><li><a class="page-menu-link" href="#autoid_185" data-menu-target="autoid_185">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_186" data-menu-target="autoid_186">Changes on the Java side</a></li></ul> </div><p>Date of release: 2006-03-11</p><p><em>This release was withdrawn because of a serious bug in
        it. Please don&#39;t use it! Of course, all new features of it are
        included in FreeMarker 2.3.6.</em></p><p>A few new features and several bugfixes.</p>
          



<h2 class="content-header header-section2" id="autoid_185">Changes on the FTL side</h2>


          <ul>
            <li>
              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1435847&amp;group_id=794">[1435847]</a>
              Alternative syntax doesn&#39;t work for comments</p>
            </li>

            <li>
              <p>Bug fixed: With the new square bracket syntax, the tag
              could be closed with <code class="inline-code">&gt;</code>. Now it can be
              closed with <code class="inline-code">]</code> only.</p>
            </li>

            <li>
              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1324020&amp;group_id=794">[1324020]</a>
              <code class="inline-code">ParseException</code> with the
              <code class="inline-code">ftl</code> directive if it wasn&#39;t in its own
              line</p>
            </li>

            <li>
              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1404033&amp;group_id=794">[1404033]</a>
              <code class="inline-code">eval</code> built-in fails with hash
              concatenation</p>
            </li>
          </ul>
        
          



<h2 class="content-header header-section2" id="autoid_186">Changes on the Java side</h2>


          <ul>
            <li>
              <p>A new <code class="inline-code">Configuration</code> level setting,
              <code class="inline-code">tagSyntax</code> was added. This determines the
              syntax of the templates (angle bracket syntax VS <a href="dgui_misc_alternativesyntax.html">square bracket
              syntax</a>) that has no <code class="inline-code">ftl</code> directive in
              it. So now you can choose to use the new square bracket syntax
              by default. However, the recommended is to use auto-detection
              (<code class="inline-code">yourConfig.setTagSyntax(Configuration.AUTO_DETECT_TAG_SYNTAX)</code>),
              because that will be the default starting from 2.4.
              Auto-detection chooses syntax based on the syntax of the first
              FreeMarker tag of the template (could be any FreeMarker tag, not
              just <code class="inline-code">ftl</code>). Note that as with the previous
              version, if a the template uses <code class="inline-code">ftl</code>
              directive, then the syntax of the <code class="inline-code">ftl</code>
              directive determines the syntax of the template, and the
              <code class="inline-code">tagSyntax</code> setting is ignored.</p>
            </li>

            <li>
              <p>Now <code class="inline-code">BeansWrapper</code>,
              <code class="inline-code">DefaultObjectWrapper</code> and
              <code class="inline-code">SimpleObjectWrapper</code> support lookup with 1
              character long strings in <code class="inline-code">Map</code>-s (like
              <code class="inline-code">myHash[&quot;a&quot;]</code>) that use
              <code class="inline-code">Character</code> keys. Simply, as a special case,
              when a hash lookup fails on a string that is 1 character long,
              it checks for the <code class="inline-code">Character</code> key in the
              underlying map. (Bug tracker entry <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1299045&amp;group_id=794">[1299045]</a>
              FreeMarker doesn&#39;t support map lookup with Character
              keys.)</p>
            </li>

            <li>
              <p>A new property, <code class="inline-code">strict</code> was added to
              <code class="inline-code">BeansWrapper</code>,
              <code class="inline-code">DefaultObjectWrapper</code> and
              <code class="inline-code">SimpleObjectWrapper</code>. If this property is
              <code class="inline-code">true</code> then an attempt to read a bean propertly
              in the template (like <code class="inline-code">myBean.aProperty</code>) that
              doesn&#39;t exist in the bean class (as opposed to just holding
              <code class="inline-code">null</code> value) will cause
              <code class="inline-code">InvalidPropertyException</code>, which can&#39;t be
              suppressed in the template (not even with
              <code class="inline-code">myBean.noSuchProperty?default(&#39;something&#39;)</code>).
              This way <code class="inline-code">?default(&#39;something&#39;)</code> and
              <code class="inline-code">?exists</code> and similar built-ins can be used to
              handle existing properties whose value is
              <code class="inline-code">null</code>, without the risk of hiding typos in the
              property names. Typos will always cause error. But mind you, it
              goes against the basic approach of FreeMarker, so use this
              feature only if you really know what are you doing.</p>
            </li>

            <li>
              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1426227&amp;group_id=794&amp;atid=100794">[1426227]</a>
              <code class="inline-code">NullPointerException</code> in
              <code class="inline-code">printStackTrace(...)</code></p>
            </li>

            <li>
              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1386193&amp;group_id=794&amp;atid=100794">[1386193]</a>
              Division by zero in <code class="inline-code">ArithmeticEngine</code></p>
            </li>
          </ul>
        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_6.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_4.html"><span>Next</span></a></div></div></div></div>      </div>
    </div>
<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/index.html">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href="https://github.com/nanlei/freemarker/tree/manual-zh-2.3-gae/src/manual">Chinese Manual on Github</a></li><li><a href="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://sourceforge.net/p/freemarker/bugs/new/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"><p><span class="generated-for-product">Generated for: Freemarker 2.3.23</span><span class="last-updated"> Last generated:
<time itemprop="dateModified" datetime="2015-09-18T14:38:51Z" title="Friday, September 18, 2015 2:38:51 PM GMT">2015-09-18 14:38:51 GMT</time></span></p> <p class="copyright">
© <span itemprop="copyrightYear">1999</span>–2015
<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://freemarker.org">The FreeMarker Project</a>. All rights reserved. </p>
</div></div></div></body>
</html>
